package com.sxj.corejava.code11_io.File;

import java.io.File;

/**
 * @author 石小俊
 * @date 2025年02月21日
 * 获取指定目录中所有的文件,包含子目录中的文件
 */
public class Test04_递归操作 {
    public static void main(String[] args) {
        try {
            File file = new File("E:\\test");
            display(file);
        } catch (FileNotExistException e) {
            System.out.println(e.getMessage());
        }
    }

    public static void display(File file) throws FileNotExistException {
        if (!file.exists()) {
            throw new FileNotExistException("该文件不存在");
        }
        // 判断当前文件是否是目录
        if (file.isDirectory()) {
            // 如果是目录,获取该目录中的所有文件
            File[] files = file.listFiles();
            // 遍历这些文件
            for (File f : files) {
                // 判断当前迭代的元素是否是文件
                if (f.isFile()) {
                    // 如果是文件,则打印文件绝对路径
                    System.out.println(f.getAbsolutePath());
                } else {
                    // 如果不是文件,说明是一个目录,则递归调用
                    display(f);
                }
            }

        } else {
            // 如果是文件,打印文件绝对路径
            System.out.println(file.getAbsolutePath());
        }
    }
}
